package com.ws.object;

import java.util.Objects;

/*
java.lang.Object类
1.Object类是所有Java类的根父类
2.如果在类的声明中未使用extends关键字指明其父类，则默认父类为java.lang.Object类
3.Object类中的功能（属性、方法）就具有通用性
4.Object类只声明了一个空参构造器

 */
public class ObjectTest {
    public static void main(String[] args) {

        Order order = new Order();
        System.out.println(order.getClass().getSuperclass());//class java.lang.Object

    }

}

class Order {

    private String name;
    private int age;

    public Order() {
    }

    public Order(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    //重写的原则：比较两个对象的实体内容是否相同
    //手动实现重写
//    @Override
//    public boolean equals(Object obj) {
//        if (this == obj) {
//            return true;
//        }
//        if (obj instanceof Order){
//            Order order = (Order) obj;
//            //比较两个对象的每个属性是否都相同
//            return this.age == order.age && this.name.equals(order.name);
//        }
//        return false;
//    }

    //自动生成的equals()
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Order order = (Order) o;
        return age == order.age &&
                Objects.equals(name, order.name);
    }

    @Override
    public String toString() {
        return "Order{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

}
